package com.bocai.kelala;


import android.app.Application;

import com.bocai.kelala.net.LocalModel;
import com.bocai.kelala.net.OkhttpModule;
import com.bocai.kelala.net.RetrofitModule;
import com.bocai.kelala.ui.travel.main.component.MainComponent;
import com.bocai.kelala.ui.travel.main.component.MainListComponent;
import com.bocai.kelala.ui.travel.main.component.MessageComponent;
import com.bocai.kelala.ui.travel.main.component.ModifyAddressComponent;
import com.bocai.kelala.ui.travel.main.component.VehicleDetailComponent;
import com.bocai.kelala.ui.travel.main.module.MainListModule;
import com.bocai.kelala.ui.travel.main.module.MainModule;
import com.bocai.kelala.ui.travel.main.module.MessageModule;
import com.bocai.kelala.ui.travel.main.module.ModifyAddressModule;
import com.bocai.kelala.ui.travel.main.module.VehicleDetailModule;
import com.bocai.kelala.ui.travel.set.component.AboutAppComponent;
import com.bocai.kelala.ui.travel.set.component.AddAddressComponent;
import com.bocai.kelala.ui.travel.set.component.CertificationComponent;
import com.bocai.kelala.ui.travel.set.component.ChangePhoneComponent;
import com.bocai.kelala.ui.travel.set.component.MyInvoiceComponent;
import com.bocai.kelala.ui.travel.set.component.PwSetComponent;
import com.bocai.kelala.ui.travel.set.component.SetComponent;
import com.bocai.kelala.ui.travel.set.contract.CertificationContract;
import com.bocai.kelala.ui.travel.set.module.AboutAppModule;
import com.bocai.kelala.ui.travel.set.module.AddAddressModule;
import com.bocai.kelala.ui.travel.set.module.CertificationModule;
import com.bocai.kelala.ui.travel.set.module.ChangePhoneModule;
import com.bocai.kelala.ui.travel.set.module.MyInvoiceModule;
import com.bocai.kelala.ui.travel.set.module.PwSetModule;
import com.bocai.kelala.ui.travel.set.module.SetModule;
import com.bocai.kelala.ui.travel.stroke.component.MyStrokeComponent;
import com.bocai.kelala.ui.travel.stroke.component.PublishStrokeComponent;
import com.bocai.kelala.ui.travel.stroke.module.MyStrokeModule;
import com.bocai.kelala.ui.travel.stroke.module.PublishStrokeModule;

import javax.inject.Singleton;

import dagger.Component;

/**
 * @version 1.0.0 <br/>
 */
@Singleton
@Component(modules = {AppModule.class, LocalModel.class, OkhttpModule.class,
        RetrofitModule.class,
})
public interface AppComponent {

    Application getApplication();

    MainComponent addSub(MainModule homeModel);

    PwSetComponent addSub(PwSetModule module);

    SetComponent addSub(SetModule module);

    ChangePhoneComponent addSub(ChangePhoneModule module);

    AddAddressComponent addSub(AddAddressModule module);

    CertificationComponent addSub(CertificationModule module);

    PublishStrokeComponent addSub(PublishStrokeModule module);

    MyStrokeComponent addSub(MyStrokeModule module);

    MainListComponent addSub(MainListModule module);

    VehicleDetailComponent addSub(VehicleDetailModule module);

    MyInvoiceComponent addSub(MyInvoiceModule module);

    MessageComponent addSub(MessageModule module);

    AboutAppComponent addSub(AboutAppModule module);

    ModifyAddressComponent addSub(ModifyAddressModule module);


}
